const request = (options) => {
  return new Promise((resolve, reject) => {
    // 从本地存储获取token
    const token = wx.getStorageSync('token')
    
    // 准备请求头
    const header = {
      ...options.header
    }
    
    // 如果有token且不是登录请求，添加到请求头
    if (token && !options.url.includes('/api/login/wechat')) {
      header.Authorization = token
    }
    
    // 构建完整URL
    const fullUrl = `http://localhost:3000${options.url}`
    
    // 请求前日志
    console.log(`[REQUEST] ${options.method || 'GET'} ${fullUrl}`, options.data)
    
    wx.request({
      ...options,
      header,
      url: fullUrl,
      success: (res) => {
        // 请求成功日志
        console.log(`[RESPONSE] ${options.method || 'GET'} ${fullUrl}`, res.statusCode, res.data)
        
        // 如果返回401未授权，可能是token过期
        if (res.statusCode === 401) {
          // 清除本地存储的token
          wx.removeStorageSync('token')
          
          // 如果不是检查登录状态的请求，提示用户重新登录
          if (!options.url.includes('/api/login/check')) {
            wx.showToast({
              title: '登录已过期，请重新登录',
              icon: 'none'
            })
          }
        }
        
        if (res.statusCode === 200) {
          resolve(res.data)
        } else {
          console.error(`[REQUEST ERROR] ${res.statusCode} ${fullUrl}`, res.data)
          reject(res.data)
        }
      },
      fail: (err) => {
        // 请求失败日志
        console.error(`[REQUEST FAILED] ${options.method || 'GET'} ${fullUrl}`, err)
        reject(err)
      }
    })
  })
}

module.exports = request